<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2024-01-27 Sat 11:58 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Why Alpine</title>
<meta name="author" content="Joshua Branson" />
<meta name="description" content="We want an Alpine based Hurd distribution, because
Alpine is simple, secure, and uses the latest
software releases." />
<meta name="keywords" content="Alpine Hurd GNU Mach" />
<meta name="generator" content="Org Mode" />
<link rel="stylesheet" href="../css/normalize.css" type="text/css"/><link rel="stylesheet" href="../css/default-org-stylesheet.css" type="text/css"/><link rel="stylesheet" href="../css/stylesheet.css" type="text/css"/>
</head>
<body>
<div id="preamble" class="status">
<nav><a href="../index.html">Home</a><a href="../about.html">About</a><a href="../blog/index.html">Blog</a></nav>
</div>
<div id="content" class="content">
<h1 class="title">Why Alpine</h1>
<p>
GNU/Linux has several different <i>distributions</i>: Ubuntu, Debian,
Fedora, Suze, etc, and each distribution is slightly different from
the others.  Fedora usually uses the most recent software, while
Debian offers stability.  Each distribution helps the entire
ecosystem, by ensuring various library versions play nicely together,
each develops of different package managers, some use different
compilers (<code>LLVM</code> instead of <code>GCC</code>) etc.  Users are free to choose the
distribution that they prefer.  This has worked out well for
GNU/Linux, but how many <b>active</b> Hurd distributions are there? <sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>
</p>

<p>
Currently?  Just two: <a href="https://www.debian.org/ports/hurd/">Debian GNU/Hurd</a> and <a href="https://guix.gnu.org">Guix System</a>.  Of these two,
Debian GNU/Hurd is more complete.  Debian GNU/Hurd has more packages,
more global mirrors, etc. People run Debian GNU/Hurd in <code>qemu</code>, <code>Xen</code>,
and on real hardware (I use a T43).  The Hurd Guix System is catching
up to Debian GNU/Hurd, but is not quite there yet <sup><a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>. What is nice about
Guix System, is that they make it realy easy to run the Hurd in a
virtual machine via this bit of <a href="https://guix.gnu.org/manual/en/html_node/Virtualization-Services.html#index-childhurd">guile code</a>:
</p>

<div class="org-src-container">
<pre class="src src-scheme">(service hurd-vm-service-type
         (hurd-vm-configuration
          (disk-size (* 5000 (expt 2 20))) <span style="font-weight: bold; font-style: italic;">;</span><span style="font-weight: bold; font-style: italic;">5G</span>
          (memory-size 1024)))
</pre>
</div>

<p>
We want to add a third distribution based on <a href="https://www.alpinelinux.org/about/">Alpine Linux</a>.  Please
note that Alpine Linux is not directly involved in this project. We
just like their design goals: small, simple, and secure.
</p>

<p>
But why another distribution?  Why not invest in the Hurd
distributions that already exist?  We believe that creating another
distribution will uncover bugs (like the one Sergey found in glibc),
test the Hurd in new environments, encourage more users to run the
Hurd, generate good publicity for the Hurd, and it's fun!
</p>

<p>
What makes Alpine Linux different from Guix and Debian?  Debian is
stable and uses somewhat older software (notable not the latest
glibc), Guix is written entirely in guile scheme, breaks the <a href="https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">FHS</a>, and
has some <a href="https://guix.gnu.org/en/about/">exciting package management features</a>.  Alpine Linux is not a
GNU distribution, and it is also known for being light-weight, secure,
and simple.  Alpine also keeps all of its packages' build recipes in
one git repo (<code>aports</code>).  To contribute a change, one would fork
<code>aports</code> and make a MR against the repo.  If its accepted, then
Alpine's continuous integration can rebuild the packages and within
minutes make the new package available for download.
</p>

<div id="outline-container-orgea83716" class="outline-2">
<h2 id="orgea83716">What is the current status?</h2>
<div class="outline-text-2" id="text-orgea83716">
<p>
Sergey ported many Alpine packages to build with (i386, for now) GNU
Mach, the Hurd, and glibc, replacing Linux and musl.  Sergey built
everything with GCC/binutils it uses gnumach, hurd, and glibc.  But
other than that, GNU software is not the default. He has 299
installable packages; the number of source packages is of course
several times less than that.  Still, this includes things like curl,
ncurses, nano, native binutils &amp; gcc &amp; mig, libffi, openrc, openssl,
util-linux, busybox, apk-tools, &#x2026; and of course gnumach, hurd (with
dependencies like libdaemon, parted, &#x2026;), and glibc. Importantly, all
this cleanly bootstraps using the <code>scripts/bootstrap.sh</code> script that
Alpine provides; this is too somewhat like Flávio's scripts, but it
uses the real full Alpine package definitions for e.g. GCC (patched by
Sergey for glibc / Hurd support).
</p>

<p>
Above the kernel and libc, things remain much as they were in upstream
Alpine: the system boots (Sergey hasn't tried booting it yet with
busybox init &amp; OpenRC yet), and uses busybox as its basic
userland. GNU software such as Bash is installable, too.
</p>

<p>
There is no ABI compatibility with either Alpine Linux or other Hurd
distributions implied: only binaries built targeting this system will
run on it. So, Sergey bumped the minimum glibc symbol version for all
architectures to GLIBC<sub>2.38</sub>. (And he will probably bump this further
to GLIBC<sub>2.39</sub>) This drops code that only exists for supporting older
binaries, and saves some disk space.
</p>

<p>
The future of this project depends entirely on you. If there's no one
interested in hacking on it and using it, it will go down in history
as another attempt at making an alternative Hurd distro that failed to
gain traction, much like Arch Hurd. This will be fine too; at least it
was a fairly interesting hack.
</p>

<p>
But if you are interested, speak up, join in, and spread the word! :)
We need:
</p>

<ol class="org-ol">
<li>Somewhere to keep our aports fork in. Depending on how serious we</li>
</ol>
<p>
are about this (if at all), this may range from a personal repo on
GitHub, to a GitHub/GitLab "organization", to a whole website of our
own with our own Git hosting solution (whether GitLab or something
else) running on it.
</p>

<ol class="org-ol">
<li>Somewhere to host the built packages, so they can be downloaded by</li>
</ol>
<p>
the package manager on users' machines.
</p>

<ol class="org-ol">
<li>A CI setup that would build packages when their package definition</li>
</ol>
<p>
changes, and upload the built result to the hosting solution from the
previous point. Perhaps see the CI setup in the pmaports repo for some
inspiration. There's also <a href="https://github.com/eburghar/reposerve">reposerve</a>, which appears to have been
developed specifically to integrate with the workflow of packages
being built on <a href="https://itsufficient.me/blog/alpine-container#packages-repository">GitLab CI</a>. Or we could use <a href="https://forgejo.org/">forgejo</a>, which supports
<code>aports</code>.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://archhurd.org/">Arch Hurd</a> did exist at some point, but it does not seem to be
active.  Perhaps you are interested in Arch, and want to re-start the
Arch Hurd project? 
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Please note that we like Guix System too!  Guix System has
plenty of active developers, lots of momentum, and is building lots of
cool software tools like <code>guix shell</code>, <a href="https://issues.guix.gnu.org/">the guix issue tracker</a>, <a href="https://qa.guix.gnu.org/">Guix
QA</a>, and they are working really hard to translate their <a href="https://guix.gnu.org/">website</a> and
manual into numerous languages.
</p></div></div>


</div>
</div></div>
<div id="postamble" class="status">
<p class="date">Date: 2024-01-25 Thu 13:31</p>
<p class="author">Author: Joshua Branson</p>
<p class="date">Created: 2024-01-27 Sat 11:58</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>